package com.cxx.purchasecharge.service;

import java.util.List;

import com.cxx.purchasecharge.core.model.persistence.Contact;
import com.cxx.purchasecharge.core.model.persistence.Customer;
import com.cxx.purchasecharge.core.model.persistence.Goods;
import com.cxx.purchasecharge.core.model.persistence.GoodsStorage;
import com.cxx.purchasecharge.core.model.persistence.Order;
import com.cxx.purchasecharge.core.model.persistence.Payment;
import com.cxx.purchasecharge.core.model.persistence.User;
import com.cxx.purchasecharge.service.exception.PcServiceException;

public interface PersistenceService
{
    Customer addCustomer (Customer customer) throws PcServiceException;

    Customer updateCustomer (Customer customer) throws PcServiceException;

    void deleteCustomer (Customer customer) throws PcServiceException;

    void deleteCustomer (List <Customer> customers) throws PcServiceException;

    Contact addContact (Contact contact) throws PcServiceException;

    Contact updateContact (Contact contact) throws PcServiceException;

    void deleteContact (Contact contact) throws PcServiceException;

    void deleteContact (List <Contact> contacts) throws PcServiceException;

    User addUser (User user) throws PcServiceException;

    User updateUser (User user) throws PcServiceException;

    void deleteUser (User user) throws PcServiceException;

    void deleteUser (List <User> users) throws PcServiceException;

    Goods addGoods (Goods goods) throws PcServiceException;

    Goods updateGoods (Goods goods) throws PcServiceException;

    void deleteGoods (Goods goods) throws PcServiceException;

    void deleteGoods (List <Goods> goodses) throws PcServiceException;

    GoodsStorage addStorage (GoodsStorage storage) throws PcServiceException;

    GoodsStorage updateStorage (GoodsStorage storage) throws PcServiceException;

    void deleteStorage (GoodsStorage storage) throws PcServiceException;

    void deleteStorage (List <GoodsStorage> storages) throws PcServiceException;

    Order addOrder (Order order) throws PcServiceException;

    Order updateOrder (Order order) throws PcServiceException;

    void deleteOrder (Order order) throws PcServiceException;

    void deleteOrder (List <Order> orders) throws PcServiceException;

    Payment addPayment (Payment payment) throws PcServiceException;

    Payment updatePayment (Payment payment) throws PcServiceException;

    void deletePayment (Payment payment) throws PcServiceException;

    void deletePayment (List <Payment> payments) throws PcServiceException;
}
